As software systems become more complex, the component orientation and code modularity have become increasingly important design goals. Assembling software from reusable components enables developers to reuse code, to modify software quickly when requirements evolve, to mitigate costs of producing multiple versions, and to reduce development time by integrating pre-written, third-party components.
This is the general area that embodiments of the invention are intended to address